//|||||||||||||||||||||||||||||||||||||||||||||||

#ifndef GAME_PROGRESS_MENU_STATE_HPP
#define GAME_PROGRESS_MENU_STATE_HPP

//|||||||||||||||||||||||||||||||||||||||||||||||

#include "AppState.hpp"
#include "GameProgress.hpp"
#include "GameApp.hpp"

//|||||||||||||||||||||||||||||||||||||||||||||||

class GameProgressMenuState : public AppState
{
public:
	GameProgressMenuState();

	DECLARE_APPSTATE_CLASS(GameProgressMenuState)

	void enter();
	void createScene();
	void exit();

	bool keyPressed(const OIS::KeyEvent &keyEventRef);
	bool keyReleased(const OIS::KeyEvent &keyEventRef);

	bool mouseMoved(const OIS::MouseEvent &evt);
	bool mousePressed(const OIS::MouseEvent &evt, OIS::MouseButtonID id);
	bool mouseReleased(const OIS::MouseEvent &evt, OIS::MouseButtonID id);

	void buttonHit(OgreBites::Button* button);

	void update(double timeSinceLastFrame);

	void setProgress(GameProgress* progress);
	GameProgress* getProgress();

	void setGameApp(GameApp* app);

	void buildGUI();

private:
	GameProgress* m_progress;
	bool m_bQuit;
	GameApp* m_app;
};

//|||||||||||||||||||||||||||||||||||||||||||||||

#endif

//|||||||||||||||||||||||||||||||||||||||||||||||